﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace CapaConexion
{
    public class Conexion
    {
        private String nombreBaseDatos;

        public String NombreBaseDatos
        {
            get { return nombreBaseDatos; }
            set { nombreBaseDatos = value; }
        }

        private String nombreTabla;

        public String NombreTabla
        {
            get { return nombreTabla; }
            set { nombreTabla = value; }
        }

        private String cadenaConexion;

        public String CadenaConexion
        {
            get { return cadenaConexion; }
            set { cadenaConexion = value; }
        }

        private String cadenaSQL;

        public String CadenaSQL
        {
            get { return cadenaSQL; }
            set { cadenaSQL = value; }
        }

        private Boolean esSelect;

        public Boolean EsSelect
        {
            get { return esSelect; }
            set { esSelect = value; }
        }

        private SqlConnection dbConnection;

        public SqlConnection DbConnection
        {
            get { return dbConnection; }
            set { dbConnection = value; }
        }

        private SqlDataAdapter dbDataAdapter;

        public SqlDataAdapter DbDataAdapter
        {
            get { return dbDataAdapter; }
            set { dbDataAdapter = value; }
        }

        private System.Data.DataSet dbDataSet;

        public System.Data.DataSet DbDataSet
        {
            get { return dbDataSet; }
            set { dbDataSet = value; }
        }

        //Metodo abrir la conexion

        public void abrirConexion()
        {
            try
            {
                this.DbConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al abrir la Conexion " + ex.Message);
            }


        } //Fin abrir


        //Metodo cerrar la conexion




        public void cerrarConexion()
        {
            try
            {
                this.DbConnection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al cerrar la Conexion " + ex.Message);
            }


        } //Fin cerrar


        //Metodo principal

        public void conectar()
        {
            //Se validan las variables de instancia

            if (this.NombreBaseDatos.Length == 0)
            {
                MessageBox.Show("Falta nombre base de datos");
                return;
            }

            if (this.NombreTabla.Length == 0)
            {
                MessageBox.Show("Falta nombre tabla");
                return;
            }

            if (this.CadenaConexion.Length == 0)
            {
                MessageBox.Show("Falta cadena conexion");
                return;
            }

            if (this.CadenaSQL.Length == 0)
            {
                MessageBox.Show("Falta nombre base de datos");
                return;
            }

            // Se instancia la conexion

            try
            {
                this.DbConnection = new SqlConnection(this.CadenaConexion);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al crear la conexion " + ex.Message);
                return;
            } //Fin TRy


            // se abre la conexion

            this.abrirConexion();

            // Se instancia un dataAdapter

            if (this.EsSelect == true)
            {
                // Se instancia un dataSet

                this.DbDataSet = new System.Data.DataSet();
                try
                {
                    this.DbDataAdapter = new SqlDataAdapter(this.CadenaSQL,
                                                            this.DbConnection);

                    this.DbDataAdapter.Fill(this.DbDataSet, this.NombreTabla);

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al cargar los datos " + ex.Message);
                    return;

                } //Fin Try


            }
            else
            {
                try
                {
                    SqlCommand variableSQL = new SqlCommand(this.CadenaSQL,
                                                            this.DbConnection);
                    variableSQL.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error instruccion SQL " + ex.Message);
                    return;
                }



            }//Fin IF



            this.cerrarConexion();

        } //Fin conectar


        //Crear metodo main para realizar prueba

        /*   public static void Main()
           {
               Conexion conec1 = new Conexion();
               conec1.NombreBaseDatos = "Prueba";
               conec1.NombreTabla = "cliente";
               conec1.CadenaConexion = "Data Source=TAMPONI-PC;Initial Catalog=prueba;Integrated Security=True";
               conec1.CadenaSQL = "SELECT * FROM " + conec1.NombreTabla;
               conec1.EsSelect = true;

               conec1.conectar();

               foreach (System.Data.DataRow dr
                   in conec1.DbDataSet.Tables[conec1.NombreTabla].Rows)
               {
                   Console.WriteLine(dr["rut"] + " " + dr["nombre"]);
               }

               Console.ReadKey();
        
        
        
           }


           */



    }
}
